/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package DAO;

import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.Connection;
import DAO.banco.ConFactory;
import Model.Paciente;
import java.sql.SQLException;
import java.util.ArrayList;
/**
 *
 * @author Ricardo
 */
public class DaoPaciente extends DAO{
    private Connection con;
    private Statement comando;

  private void conectar() {
      try {
         con = ConFactory.conexao();
         comando = con.createStatement();
         System.out.println("Conectado!");
      } catch (ClassCastException e) {
         imprimeErro("Erro ao carregar o driver", e.getMessage());
      } catch (SQLException e) {
         imprimeErro("Erro ao conectar", e.getMessage());
      }
   }



  private void fechar() {
      try {
         comando.close();
         con.close();
         System.out.println("Conexão fechada com sucesso");
      } catch (SQLException e) {
         imprimeErro("Erro ao fechar conexão", e.getMessage());
      }
   }

  public ArrayList<Paciente> retornaTodosPacientes(){
      conectar();
      ResultSet resultSet;
      ArrayList<Paciente> resultado = new ArrayList<Paciente>();
      try {
          resultSet = comando.executeQuery("SELECT * FROM paciente;");
          while(resultSet.next()){
              Paciente paciente = new Paciente();
              paciente.setIndentificador(Integer.parseInt(resultSet.getString("idpessoa")));
              paciente.setNome(resultSet.getString("nome"));
              paciente.setCPF(resultSet.getString("cpf"));
              paciente.setDataNascimeto(resultSet.getDate("dtnasc"));
              paciente.setRG(resultSet.getString("rg"));
              paciente.setTelefone(resultSet.getString("telefone"));
              resultado.add(paciente);
          }
          return resultado;
      } catch (SQLException e) {
           imprimeErro("Não há dados na base!", e.getMessage());
           return null;
      }
  }

  public Paciente retornaUmPaciente(int identificador){
        conectar();
        ResultSet resultSet;
        Paciente paciente = new Paciente();
        try {
              resultSet = comando.executeQuery("SELECT * FROM paciente WHERE idpessoa = "+identificador+";");
              paciente.setIndentificador(Integer.parseInt(resultSet.getString("idpessoa")));
              paciente.setNome(resultSet.getString("nome"));
              paciente.setCPF(resultSet.getString("cpf"));
              paciente.setRG(resultSet.getString("rg"));
              paciente.setDataNascimeto(resultSet.getDate("dtnasc"));
              paciente.setTelefone(resultSet.getString("telefone"));
              return paciente;
      } catch (SQLException e) {
              imprimeErro("Não há dados na base!", e.getMessage());
              return null;
      }
  }

   public void apagar(int identificador){
       conectar();
       try {
            comando.executeUpdate("DELETE FROM pessoa WHERE idpessoa ="+identificador+";");
       } catch (SQLException e) {
            imprimeErro("Não há dados na base!", e.getMessage());
       }finally{
            fechar();
       }
   }

   public void atualiza(Paciente pessoa){
       conectar();
       String query = "UPDATE presa "+
              "SET "
              +"nome =" + pessoa.getNome()+", "
              +"dtnasc =" + pessoa.getDataNascimeto()+", "
              +"cpf =" + pessoa.getCPF()+", "
              +"rg =" + pessoa.getRG()+", "
              +"telefone =" + pessoa.getTelefone()
              +" WHERE "
              +"idpresa =" + pessoa.getIndentificador() + ";";
       try {
            comando.executeUpdate(query);
       } catch (SQLException e) {
            imprimeErro("Não há dados na base!", e.getMessage());
       }finally{
            fechar();
       }
   }
}
